/* 
 * File:   params.h
 * Author: Patrick W. M. Adams
 * Institution: Astrophysics, Cosmology and Gravity Centre,
 *              Department of Mathematics and Applied Mathematics,
 *              University of Cape Town
 *
 * Created on 14 March 2012, 4:03 AM
 */

#ifndef PARAMS_H
#define	PARAMS_H

#include <algorithm>
#include <boost/algorithm/string.hpp>
#include <iostream>
#include <string>
#include <vector>
#include "fileIO.h"

//class Params
class Params{
    
public:
    
    Params(bool readFromInternalLists = true); //default constructor
    ~Params(); //default destructor
    
    void checkParam(std::string, std::vector<std::string>&); //check if user-supplied parameters are valid
    
    friend class Simulation;
    
private:
    
    std::vector<std::string> runParamList; //list of valid run parameter names
    std::vector<std::string> initParamList; //list of valid initialisation params
    std::vector<std::string> paramList; //list of user-supplied params
    std::vector<std::string> distList; //list of user-supplied params
    
    std::vector<std::string>::iterator runItr; //iterator for list
    std::vector<std::string>::iterator initItr; //iterator for list
    std::vector<std::string>::iterator distItr; //iterator for list
    
};//end class Params



#endif	/* PARAMS_H */

